/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package uk.ac.bath.base;

import java.io.BufferedReader;
import java.io.IOException;
import java.util.Vector;
import uk.ac.bath.Logger;
import uk.ac.bath.gui.View;
import uk.ac.bath.util.Tweakable;



/**
 *  Define top level interface of the simulation.
 *
 * @author pjl
 */
public interface EnvironmentIF extends Runnable {

 //   public Component createEvaluationView();

    public void dispose();

    public String reportSetup();


    /**
     * set an object reponsible to dispaly the state
     *
     * @param gu
     */
    public void setGuiUpdater(GuiUpdaterIF gu);


    /**
     *
     * @return number of ticks
     */
    public int getTickCount();

    public void setLogger(Logger log);

    /**
     *
     * reset everything and start again
     *
     */
    public void zap();

 //   public void mutateCell(Cell cell);

 //   public void readTweakValues(BufferedReader bin) throws IOException;
    
    public Vector<Tweakable> getTweaks();

    /**
     * 
     * @param interval
     */
    public void setFrameRate(long interval);

    /**
     *
     * @return a view of the simulation
     */
    public View createSimulationView();




}
